package com.example.musicproject_b.Controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.common.dto.Acticledto;
import com.example.common.dto.ArticleInfo;
import com.example.common.dto.TagRequestdto;
import com.example.common.pojo.musicarticle;
import com.example.common.utils.Resultb;
import com.example.service.MusicArticleservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/B_admin/article")
public class BArticleController {

    @Autowired
    private MusicArticleservice musicArticleservice;

    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/15 18:26
     * 文章列表（包含文章逻辑删除，用户逻辑删除，当用户状态为1的时候，被禁用的用户不显示文章）
     * 文章表和文章标签表和用户关联查询
     */
    @RequestMapping("/hasdeletelist")
    public Resultb hasdeletelist(int pageNum, int pageSize ,String name , Long tagid , Long categoryId){
        List<Acticledto> acticledtoPage = musicArticleservice.gethasdeletelist(pageNum, pageSize , name ,tagid,categoryId);
        return Resultb.success(acticledtoPage);
    }

    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/15 18:26
     * 文章列表（不包含逻辑删除,tag,category）
     * 可以根据标签和文章标题查询
     */
    @RequestMapping("/alllist")
    public Resultb alllist(int pageNum, int pageSize ,String name , Long tagid){
        Page<Acticledto> acticledtoPage = musicArticleservice.selectPagearticle(pageNum, pageSize, name, tagid);
        return Resultb.success(acticledtoPage);
    }

    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/10/8 17:09
     * 根据id查询文章
     */
    @RequestMapping("/getarticleById")
    public Resultb getarticleById(Long id){
        musicarticle acticledto = musicArticleservice.selectArticleById(id);
        if (acticledto==null){
            return Resultb.error();
        }
        return Resultb.success(acticledto);
    }


    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/10/2 16:09
     * 修改id指定文章分类
     */
    @RequestMapping("/updatecategory")
    public Resultb updatecategory(Long id,Long categoryId){
        boolean b = musicArticleservice.updateCategoryById(id, categoryId);
        if (!b){
            return Resultb.error();
        }
        return Resultb.success();
    }


    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/26 15:04
     * 为批量文章修改分类
     */


    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/26 15:03
     * 为指定文章添加标签数组
     */
    @RequestMapping("/addtag")
    public Resultb addtag(@RequestBody TagRequestdto tagRequestdto){
        boolean b = musicArticleservice.addTag(tagRequestdto.getId(), tagRequestdto.getTagList());
        if (!b){
            return Resultb.error();
        }
        return Resultb.success();
    }



    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/26 15:03
     * 禁用和启用文章
     */
    @RequestMapping("/startandstop")
    public Resultb startandstop(Long id){
        boolean b = musicArticleservice.startandstop(id);
        if (!b){
            return Resultb.error();
        }
        return Resultb.success();
    }


    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/26 15:03
     * 彻底删除文章
     */
    @RequestMapping("/delete")
    public Resultb delete(Long id){
        boolean b = musicArticleservice.allremoveById(id);
        if (!b){
            return Resultb.error();
        }
        return Resultb.success();
    }


    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/15 18:26
     * 修改文章标题相关信息
     */

    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/15 18:26
     * 根据文章id查询文章详情
     */
    @RequestMapping("/selectArticleInfo")
    public Resultb selectArticleInfo(Long id){
        ArticleInfo articleInfo = musicArticleservice.selectNewArticleInfo(id);
        return Resultb.success(articleInfo);
    }

    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/15 18:26
     * 修改文章内容
     */

    /**
     * @return
     * @param @param null
     * @author znk
     * @date 2024/9/26 14:12
     * 新增文章标题和内容
     */


}
